algoritmo della diramazione ad albero
|
I bridge devono assicurarsi che nella rete non esistano circoli viziosi e
cioè che la stessa trama non continui a girare eternamente in tondo
mantenendo la rete inutilmente occupata alla ricerca di un percorso per
arrivare alla propria destinazione. Questo succede quando tra due reti o
due segmenti esistono più percorsi possibili. Le trame continuano a
propagarsi su tutti i segmenti possibili e a volte tornano indietro
creando circoli viziosi. La trama esce ñdalla porta" e rientra ñdalla
finestra" di continuo. Per intercettare queste ñtrame vagabonde" si
sceglie uno tra i vari percorsi possibili e si fanno confluire su quel
percorso tutte le trame indirizzate a una certa destinazione. Il percorso
che viene scelto deve essere quello più corto tra tutti quelli
disponibili. La decisione viene presa seguendo un algoritmo che si chiama
spanning-tree (diramazione ad albero). Se il percorso originariamente
scelto venisse a mancare per un difetto della rete, il bridge passerebbe
al secondo così da mantenere una continuità di connessione. Il risultato
finale è che la rete appare strutturata come un grande albero gerarchico
senza percorsi doppi tra nessuna delle sue stazioni.
LÆefficacia di questo metodo è limitata alle reti locali e non funziona
bene su una connessione geografica poiché comporta il continuo scambio
dÆinformazioni tra i bridge.
Supponiamo di avere un paio di bridge che uniscono gli stessi segmenti, A
e B. Sul segmento A ci sono la stazione A e D sul segmento B ci sono le
stazioni B e C. Quando la stazione A spedisce una trama di broadcast
indirizzata a tutte le stazioni presenti in rete, comprese quelle del
segmento B, la trama passa sia dal primo bridge sia dal secondo. Avendoli
attraversati entrambi, giunge sullÆaltro segmento dove viene ricevuta due
volte dalle stazioni B e C (prima come rimando da un bridge e poi come
rimando dallÆaltro). E anche i singoli bridge la ricevono di nuovo,
scambiandosela lÆuno con lÆaltro. A quel punto i bridge ñcredono" che
la stazione A si sia trasferita nel segmento B, visto che da questÆultimo
arriva una trama il cui indirizzo di provenienza riporta appunto quello
della stazione B. Perciò aggiornano la propria tabella interna.
Trattandosi di un broadcast, la trama viene di nuovo trasferita
sullÆaltro segmento, cioè sul segmento A, quello di partenza. Qui sarà
distribuita a tutte le macchine presenti, compresi i due bridge che a
questo punto crederanno che la macchina A si sia spostata di nuovo e
spediranno la trama dallÆaltra parte una seconda volta, proseguendo in
questa maniera allÆinfinito oppure fino a che si verifica una collisione
o qualche altro evento che interrompe il circolo vizioso. Poiché i
broadcast sono abbastanza comuni, una rete di questo genere finirebbe
presto saturata di traffico parassita, che non ha alcuna ragione di
esistere e che impedisce al traffico normale di fluire. Può capitare che
alla trama ñimpazzita" della prima macchina si aggiungano trame di
broadcast generate da altre macchine e che anche queste trame continuino a
girare allÆinfinito, moltiplicandosi. A questo punto la rete arriva
praticamente a bloccarsi, sia perché rimane completamente congestionata da
questo traffico inutile sia perché, a quel punto, i bridge avranno
lÆimpressione che lÆintera rete stia ñmigrando" in continuazione, con
macchine che passano da un segmento allÆaltro a una velocità fenomenale.
Una condizione di questo genere viene definita broadcast storm (tempesta
di broadcast). E come qualsiasi tempesta che si rispetti costituisce una
calamità per la rete e i suoi utenti.
UnÆaltra possibilità di generare confusione è quella in cui la rete viene
accesa per la prima volta ed esistono due bridge che collegano tra loro
gli stessi segmenti, come in figura 2. Questi bridge ricevono entrambi
dalla stazione A una trama destinata alla stazione B. La prima azione che
compiono è quella dÆinserire lÆindirizzo della stazione A nella tabella
interna indicandolo come appartenente al segmento A, dopodiché entrambi
trasmettono la trama sullÆaltro segmento. Le stazioni B e C ricevono la s
tessa trama due volte e ne devono scartare una, sprecando tempo di
trasmissione, ma allo stesso tempo la trama viene scambiata anche tra i
due bridge che adesso credono che la stazione A sia sul segmento B e
modificano la propria tabella interna inserendo unÆinformazione
sbagliata. Da quel momento sarà loro impossibile recapitare trame
destinate alla stazione A fino a che questa non si farà di nuovo viva con
una trasmissione sul segmento A al fine di determinare un riaggiornamento
della forwarding table.
LÆalternativa consiste nellÆevitare che esistano più percorsi possibili
tra due segmenti, ma questo non è sempre possibile e in certi casi, nelle
reti complesse, il secondo percorso può crearsi anche incidentalmente.
Inoltre, talvolta viene costruito di proposito così da garantire la
massima sicurezza di connessione: quando un bridge si rompe subentra
lÆaltro.
La vera soluzione a questo problema del circuito chiuso (loop) creato da
due o più bridge è stata inventata da Digital Equipment che, lo
ricordiamo, ha giocato un ruolo determinante nella prima diffusione delle
reti Ethernet e che ha definito un particolare metodo, chiamato algoritmo
di spanning tree (diramazione ad albero), per scegliere automaticamente un
percorso primario quando esistono diversi percorsi alternativi. Il metodo
consiste nel raggruppare i bridge che si trovano su un certo percorso in
modo che seguano una struttura gerarchica ad albero e che non esistano
doppi percorsi possibili. Questo metodo è stato successivamente
standardizzato e ridefinito dallÆIEEE nel documento 802.1d; oggi non
esiste bridge o switch che lo utilizzi. Per prevenire il diffondersi di
queste ñtrame vagabonde", si sceglie uno tra i vari percorsi possibili e
sÆincanalano tutte le trame lungo tale percorso che deve essere il più
corto tra tutti quelli disponibili. Se il percorso originariamente scelto
venisse a mancare per un difetto della rete, si passa al secondo così da
mantenere la continuità di connessione.
Quando la rete viene accesa per la prima volta e ogni volta che si
verifica una qualsiasi variazione nella disposizione delle macchine, i
bridge si scambiano un particolare tipo di messaggio chiamato Bridge
Protocol Data Unit (BPDU). Questo messaggio serve a stabilire quale tra
essi costruirà il percorso primario (root bridge - bridge radice o ceppo
per mantenere il confronto con un albero). Una volta che lo si è definito,
tutti gli altri bridge bloccano le porte che collegano il segmento A al
segmento B così da eliminare qualsiasi percorso alternativo. Qualsiasi
trama che debba circolare tra i due segmenti attraverserà solo il root
bridge. Nel caso in cui questÆultimo si guastasse, i suoi pacchetti BPDU
smetterebbero di arrivare agli altri bridge con frequenza regolare (da uno
a quattro secondi) e qualcun altro prenderebbe il suo posto.
Il blocco delle porte avviene in automatico secondo questa procedura: una
volta scelto il root bridge si determina sugli altri bridge quale la porta
è la migliore per comunicare con esso. Questa si chiamerà root port.
Inoltre, nel caso di reti composte da molti segmenti, si identifica quale
bridge fungerà da intermediario per raggiungere il root bridge da un
segmento periferico. LÆintermediario prende il nome di designated bridge.
Prese queste decisioni, si disattivano tutte le porte che non siano root
port (cioè indispensabili per comunicare con il root bridge) e che non
servano a collegare un segmento periferico.
|
|